package org.abettor.pushbox.util;

import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;

/**
 * 工具类
 * @author jzh
 *
 * @param <T>
 */
public class Statck<T> {
	private List<T> mList = new LinkedList<T>();
	/**
	 * push
	 * @param t
	 */
	public void push(T t){
		mList.add(t);
	}
	/**
	 * pop
	 * @return
	 */
	public T pop(){
		if(size() > 0){
			return mList.remove(size() -1);
		}else{
			return null;
		}
	}
	/**
	 * peek
	 * @return
	 */
	public T peek(){
		if(size() > 0){
			return mList.get(size() - 1);
		}else{
			return null;
		}
	}
	/**
	 * 获得长度
	 * @return
	 */
	public int size(){
		return mList.size();
	}
	/**
	 * 获得特定的元素
	 * @param index
	 * @return
	 */
	public T getIndex(int index){
		if(index <0 || index > size()){
			return null;
		}
		return mList.get(index);
	}
	/**
	 * 获得栈底的操作
	 * @return
	 */
	public T getBottom(){
		if(!mList.isEmpty()){
			return mList.get(0);
		}else{
			return null;
		}
	}
	/**
	 * 获得叠代器的操作
	 * @return
	 */
	public Iterator<T> iterator(){
		return mList.iterator();
	}
	/**
	 * clear
	 */
	public void clear(){
		mList.clear();
	}
}
